package com.anyou.mall.goo.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;
import com.anyou.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.anyou.common.core.domain.BaseEntity;

import javax.validation.constraints.NotNull;

/**
 * 商品优惠券对象 goo_goods_coupon
 *
 * @author gaochaohao
 * @date 2022-03-28
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@ApiModel(value = "商品优惠券")
@TableName(value = "goo_goods_coupon")
public class GoodsCoupon extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 优惠券编号 */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("优惠券编号")
    private Long goodsCouponId;

    /** 优惠券名称 */
    @ApiModelProperty("优惠券名称")
    @Excel(name = "优惠券名称")
    private String couponName;


    /** 优惠券金额 */
    @ApiModelProperty("优惠券金额")
    @Excel(name = "优惠券金额")
    private BigDecimal couponPrice;

    /** 优惠券满减金额（满减卷） */
    @ApiModelProperty("优惠券满减金额（满减卷）")
    @Excel(name = "优惠券满减金额", readConverterExp = "满=减卷")
    private BigDecimal couponFulPrice;

    /** 折扣（折扣卷） */
    @ApiModelProperty("折扣几折（折扣卷）")
    @Excel(name = "折扣", readConverterExp = "折=扣卷")
    private Long discount;


/*    *//** 订单类品id（类品卷） *//*
    @ApiModelProperty("订单类品id（类品卷）")
    @Excel(name = "订单类品id", readConverterExp = "类=品卷")
    private Long goodTypeId;*/

    /** 优惠券类型:1现金券；2满减券；3折扣；4单品券；5品类券 */
    @ApiModelProperty("优惠券类型:1现金券；2满减券；3折扣；4单品券；5品类券")
    @Excel(name = "优惠券类型:1现金券；2满减券；3折扣；4单品券；5品类券")
    private String couponType;

    /** 发放优惠券类型:1按用户发放；2订单金额满多少发放；3新注册用户发放；4分享奖励发放；5按订单单品金额满多少发放 ；6按订单品类金额满多少发放 ；7用户领取 */
    @ApiModelProperty("发放优惠券类型:1按用户发放；2订单金额满多少发放；3新注册用户发放；4分享奖励发放；5按订单单品金额满多少发放 ；6按订单品类金额满多少发放 ；7用户领取")
    @Excel(name = "发放优惠券类型:1按用户发放；2订单金额满多少发放；3新注册用户发放；4分享奖励发放；5按订单单品金额满多少发放 ；6按订单品类金额满多少发放 ；7用户领取")
    private String sendCouponType;

    /** 订单满多少发放 */
    @ApiModelProperty("订单满多少发放")
    @Excel(name = "订单满多少发放")
    private BigDecimal sendCouponFulPrice;

    /** 订单商品单品满满多少发放 */
    @ApiModelProperty("订单商品单品满满多少发放")
    @Excel(name = "订单商品单品满满多少发放")
    private BigDecimal sendGoodsPrice;

    /** 发放订单单品商品id */
    @ApiModelProperty("发放订单单品商品id")
    @Excel(name = "发放订单单品商品id")
    private Long sendGoodsId;

    /** 订单商品分类类型满满多少发放 */
    @ApiModelProperty("订单商品品类满满多少发放")
    @Excel(name = "订单商品品类满满多少发放")
    private BigDecimal sendGoodsTypePrice;

    /** 发放订单商品分类id */
    @ApiModelProperty("发放订单商品分类id")
    @Excel(name = "发放订单商品分类id")
    private String sendGoodsTypeId;

    /** 开始日期 */
    @ApiModelProperty("开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message = "开始日期不能为空")
    private Date startTime;

    /** 结束日期 */
    @ApiModelProperty("结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message = "结束日期不能为空")
    private Date endTime;

    /** 优惠券数量 */
    @ApiModelProperty("优惠券数量")
    @Excel(name = "优惠券数量")
    private Long couponCount;

    /** 剩余数量 */
    @ApiModelProperty("剩余数量")
    @Excel(name = "剩余数量")
    private Long remainCount;


    /** 是否可叠加 : 0 -> 不能叠加；1-> 可以叠加 */
    @ApiModelProperty("是否可叠加 : 0 -> 不能叠加；1-> 可以叠加")
    @Excel(name = "是否可叠加 : 0 -> 不能叠加；1-> 可以叠加")
    private String isSuperposition;


/*    *//** 汽配商id数组 *//*
    @ApiModelProperty("汽配商id数组")
    @TableField(exist = false)
    private List<Long> carPartsShopIds;*/


    /* 配件分类编号多选(（品类卷） */
    @ApiModelProperty("商品和优惠券的关系")
    @Excel(name = "商品和优惠券的关系")
    @TableField(exist = false)
    private List<GoodsCouponRelation> goodsCouponRelation;

    /**
     * 可用商家
     * 此字段前端新增的时候,多个以英文逗号分割
     */
    @ApiModelProperty("可用商家")
    @TableField(exist = false)
    private String availableStore;

    /**
     * 优惠券历史记录
     */
    @ApiModelProperty("优惠券历史记录")
    @TableField(exist = false)
    private List<GoodsCouponHistory> useHistory;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @ApiModelProperty("删除标志（0代表存在 2代表删除）")
    private String delFlag;

    /**
     * 是否过期（0否，1是）
     */
    @ApiModelProperty("是否过期（0否，1是）")
    private String isOverdue;

    /**
     * 创建者汽配商id
     */
    @ApiModelProperty("创建者汽配商id")
    private Long carPartsShopId;

}
